#include "vtI2C.h"
#include "lcdTask.h"
// Structure used to pass parameters to the task
// Do not touch...
typedef struct __DriveStruct {
	//vtLCDStruct *lcdData;
	xQueueHandle inQ;
	vtLCDStruct *lcdData
} vtDriveStruct;
// Maximum length of a message that can be received by this task
#define vtdriveMaxLen 20

// Public API
//
// Start the task
// Args: 
//   driveData: Data structure used by the task
//   uxPriority -- the priority you want this task to be run at
//   lcd: pointer to the data structure for an LCD task
void vStartDriveTask(vtDriveStruct* driveData, unsigned portBASE_TYPE uxPriority, vtLCDStruct *lcd); //, vtLCDStruct *lcd, vtMotorStruct *motor);
// Send a value message to the ADC task													
// Args:
//   driveData -- a pointer to a variable of type "vtMappingStruct"
//   msgType -- the type of the message to send
//   value -- The value to send
//   ticksToBlock -- how long the routine should wait if the queue is full
// Return:
//   Result of the call to xQueueSend()
portBASE_TYPE SendDriveValueMsg(vtDriveStruct* driveData, uint8_t msg_type, uint8_t front, uint8_t left, uint8_t right, portTickType ticksToBlock);
//portBASE_TYPE SendDriveValueMsg(vtDriveStruct* driveData, portTickType ticksElapsed, portTickType ticksToBlock);

void sendSensorData(uint8_t front, uint8_t left, uint8_t right);

void  DriveTimerCallback(xTimerHandle);